package cn.tedu._03vehicle.controller;

import cn.tedu._03vehicle.base.response.JsonResult;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;

import java.io.File;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.UUID;

@Slf4j
@RestController
@RequestMapping("/v1/file/")
public class UploadController {

    @PostMapping("upload")
    public JsonResult upload(MultipartFile file) throws IOException {
        //终极目标: 将上传的文件保存到服务器的指定目录中[d:/files/2025/08/12/83b18a89-76dc-47b6-a889-e7d64c0aca67.png]
        //***************第1步:处理文件名********************
        // 1.1 获取原始文件名:01.png
        String filename = file.getOriginalFilename();
        // 1.2 获取文件名中的扩展名: .png
        String suffix = filename.substring(filename.lastIndexOf("."));
        // 1.3 生成全球唯一的文件名[UUID]: 83b18a89-76dc-47b6-a889-e7d64c0aca67.png
        filename = UUID.randomUUID() + suffix;

        //****************第2步:处理文件路径*********************
        // 2.1 处理日期路径
        String dirPath = "d:/files";
        SimpleDateFormat sdf = new SimpleDateFormat("/yyyy/MM/dd/");
        String datePath = sdf.format(new Date());
        //2.2 创建目录
        File file1 = new File(dirPath + datePath);
        if (!file1.exists()){
            file1.mkdirs();
        }
        //*************第3步:保存文件*************************
        String filePath = dirPath + datePath + filename;
        file.transferTo(new File(filePath));

        log.debug("文件名:{}", filePath);

        //前端在页面中需要显示这张图片:http://localhost:8080/2025/08/12/a4b3c213-4616-4969-a48e-7f287396fbaf.jpg
        //服务端返回:{"state":2000, "message":"操作成功", "data":"/2025/08/12/a4b3c213-4616-4969-a48e-7f287396fbaf.jpg"}
        //前端工程师: 获取到data,并将该图片渲染到页面中;
        return JsonResult.ok(datePath + filename);
    }
}










